unit MedaxData ;

interface

uses
    Windows,
    Messages,
    SysUtils,
    Classes,
    Graphics,
    Controls,
    Forms,
    Dialogs,
    DB,
    DBTables,
    ActnList ;

type

    TField = class
    private
        fData : string ;
    public
        constructor Create ;
        function AsString : string ;
        function AsInteger : integer ;
    end ;

    TRecord = class( TStrings )
    private
        fData : TStringlist ;
        fKey : string ;
        fField : TField ;
        FEOF : boolean ;
        function GetField : TObjectField ;
        function GetEOF : boolean ;
    public
        constructor Create ;
        destructor Destroy ; override ;
        property EOF : boolean read GetEOF ;
        property Field : TObjectField read GetField ;
        procedure First ;
        procedure Next ;
        procedure SetRange( a, b : array of string ) ;
        procedure CancelRange ;
        procedure AppendRecord( a : array of string ) ;
        function FindKey( a : array of string ) : boolean ;
        function FindField( a : string ) : TObjectField ;
    end ;

    TBoxesInfo = class( TRecord )
    public
    end ;

    TPartsInfo = class( TRecord )
    public
    end ;

    TFamiliesInfo = class( TRecord )
    public
    end ;

    TPadsInfo = class( TRecord )
    public
    end ;

    TPinsInfo = class( TRecord )
    public
    end ;

    TShapesInfo = class( TRecord )
    public
    end ;

    TMedaxDataModule = class( TDataModule )
    private
        { Private declarations }
        fBoxes : TBoxesInfo ;
        fParts : TPartsInfo ;
        fShapes : TShapesInfo ;
        fFamilies : TFamiliesInfo ;
        fPads : TPadsInfo ;
        fPins : TPinsInfo ;
        procedure DataModuleDestroy( Sender : TObject ) ;
        procedure DataModuleCreate( Sender : TObject ) ;
        function GetBoxes : TBoxesInfo ;
        function GetFamilies : TFamiliesInfo ;
        function GetPads : TPadsInfo ;
        function GetPins : TPinsInfo ;
        function GetParts : TPartsInfo ;
        function GetShapes : TShapesInfo ;
    public
        { Public declarations }
        constructor Create ;
        destructor Destroy ; override ;
        property Boxes : TBoxesInfo read GetBoxes ;
        property Families : TFamiliesInfo read GetFamilies ;
        property Pads : TPadsInfo read GetPads ;
        property Parts : TPartsInfo read GetParts ;
        property Pins : TPinsInfo read GetPins ;
        property Shapes : TShapesInfo read GetShapes ;
    end ;

var
    MedaxDataModule : TMedaxDataModule ;

implementation

{$R *.DFM}

constructor TMedaxDataModule.Create ;
begin
    fBoxes := TBoxesInfo.Create ;
    fFamilies := TFamiliesInfo.Create ;
    fPads := TPadsInfo.Create ;
    fParts := TPartsInfo.Create ;
    fPins := TPinsInfo.Create ;
    fShapes := TShapesInfo.Create ;
end ;

procedure TMedaxDataModule.DataModuleCreate( Sender : TObject ) ;
begin
    fShapes.Free ;
    fPins.Free ;
    fParts.Free ;
    fPads.Free ;
    fFamilies.Free ;
    fBoxes.Free ;
end ;

procedure TMedaxDataModule.DataModuleDestroy( Sender : TObject ) ;
begin
end ;

destructor TMedaxDataModule.Destroy ;
begin

end ;

function TMedaxDataModule.GetBoxes : TBoxesInfo ;
begin

end ;

function TMedaxDataModule.GetFamilies : TFamiliesInfo ;
begin

end ;

function TMedaxDataModule.GetPads : TPadsInfo ;
begin

end ;

function TMedaxDataModule.GetPins : TPinsInfo ;
begin

end ;

function TMedaxDataModule.GetParts : TPartsInfo ;
begin

end ;

function TMedaxDataModule.GetShapes : TShapesInfo ;
begin

end ;

{ TObjectInfo }

procedure TRecord.AppendRecord( a : array of string ) ;
begin

end ;

procedure TRecord.CancelRange ;
begin

end ;

constructor TRecord.Create ;
begin
    fData := TStringList.Create ;
    fField := nil ;
    fKey := '' ;
end ;

destructor TRecord.Destroy ;
begin
    fData.Free ;
    inherited ;
end ;

function TRecord.FindField( a : string ) : TObjectField ;
begin

end ;

function TRecord.FindKey( a : array of string ) : boolean ;
begin

end ;

procedure TRecord.First ;
begin

end ;

function TRecord.GetEOF : boolean ;
begin
    Result := False ;
end ;

function TRecord.GetField : TObjectField ;
begin

end ;

procedure TRecord.Next ;
begin

end ;

procedure TRecord.SetRange( a, b : array of string ) ;
begin

end ;

{ TObjectField }

function TField.AsInteger : integer ;
begin
    Result := StrToIntDef( fData, -1 ) ;
end ;

function TField.AsString : string ;
begin
    Result := fData ;
end ;

constructor TField.Create ;
begin
    fData := '' ;
end ;

end.

